const fs = require('fs');
const path = require('path');
const readline = require('readline');
const { Sequelize } = require('sequelize')


var dbhost, dbname, dbuser, dbpassword;
function copyFolder(_fromfolder, _tofolder) {
    // 检查源文件夹是否存在
    if (!fs.existsSync(_fromfolder)) {
        console.error(`源文件夹 ${_fromfolder} 不存在`);
        return;
    }
    // 创建目标文件夹
    if (!fs.existsSync(_tofolder)) {
        fs.mkdirSync(_tofolder, { recursive: true });
    }
    // 读取源文件夹中的所有文件和子文件夹
    const files = fs.readdirSync(_fromfolder);
    files.forEach((file) => {
        const fromPath = path.join(_fromfolder, file);
        const toPath = path.join(_tofolder, file);
        const stat = fs.statSync(fromPath);
        if (stat.isDirectory()) {
            // 如果是文件夹，则递归复制
            copyFolder(fromPath, toPath);
        } else {
            // 如果是文件，则复制文件
            fs.copyFileSync(fromPath, toPath);
        }
    });
}

// 执行命令行命令
function runCommand(cmd) {
    return new Promise((resolve, reject) => {
        const childProcess = require('child_process');
        childProcess.exec(cmd, (error, stdout, stderr) => {
            if (error) {
                reject(error);
            } else {
                resolve(stdout);
            }
        });
    });
}

function replaceContent(file, _contentreg, content) {
    console.log(file, _contentreg, content);
    try {
        // 读取文件内容
        let fileContent = fs.readFileSync(file, 'utf8');
        // 使用正则表达式查找并全局替换
        const replacedContent = fileContent.replace(new RegExp(_contentreg, 'g'), content);
        if (replacedContent !== fileContent) {
            // 将修改后的内容写回文件
            fs.writeFileSync(file, replacedContent, 'utf8');
            console.log('替换成功');
        } else {
            console.log(`未找到匹配项，无法替换`);
        }
    } catch (error) {
        console.error('文件操作出错:', error);
    }
}
function copyFile(sourcepath,itempath){
        // 检查源文件是否存在
    if (!fs.existsSync(sourcepath)) {
        console.error(`源文件 ${sourcepath} 不存在`);
        return;
    }

    // 创建目标目录（如果不存在）
    if (!fs.existsSync(path.dirname(itempath))) {
        fs.mkdirSync(path.dirname(itempath), { recursive: true });
    }

    // 复制文件
    fs.copyFileSync(sourcepath, itempath);
    console.log(`文件已成功复制从 ${sourcepath} 到 ${itempath}`);
}

function readFile(path){
    console.log(path);
    let fileContent = fs.readFileSync(path, 'utf8');
    return fileContent ;
}

module.exports = {
    copyFolder,
    runCommand,
    replaceContent, 
    copyFile,readFile

}
